Alocarea Memoriei in Limbaje de Nivel Inalt
Practic toate microprocesoarele contemporane folosesc compilatoare sau, mai bine spus, generatoare de cod care reprezinta declaratiile limbajului de nivel inalt si modalitatile de adresare a memoriei prin instructiuni masina si organizarea memoriei. Descrierea de mai jos se aplica limbajelor structurate si care permit programare recursiva, asa cum sint popularele limbaje Pascal si C, larg acceptate in lumea microprocesoarelor.
Spatiul de memorie ocupat de un program poate fi divizat in doua sectii principale: o sectiune read only (care poate fi citita, dar nu inscrisa), care contine codul si constantele, si o sectiune read write (ce poate fi atit citita cit si inscrisa), in care se stocheaza toate variabilele declarate si auxiliare utilizate de catre program. In general, aceste doua sectii sint alocate in doua zone de memorie (chiar daca aceste zone ar putea fi continue). La rindul ei, zona de date poate fi subdivizata in zona pentru stiva (stack), unde se aloca variabilele declarate, si zona cu acces aleatoriu (heap   gramada neorganizata), folosita pentru variabilele create dinamic.
Modurile de adresare utilizate cel mai frecvent de catre un generator de cod avind ca intrare un limbaj de nivel inalt sint cele care calculeaza adresa operandului prin adunarea unei cantitati la continutul unui registru, continut obtinut din incarcarea cu unul din indicatorii de cadru, memorati in cimpul de afisare. Afirmatia poate fi usor verificata, intrucit majoritatea compilatoarelor ofera, suplimentar fata de codul obiect,  un fisier in limbaj de asamblare, care reprezinta codul generat. Pe de alta parte, alte moduri de adresare, cum sint cele utilizind adresa completa specificata in chiar codul instructiunii, nu prezinta interes pentru generarea de cod avind ca sursa programe scrise in limbaje de nivel inalt.